package com.wyd.wenyongdaAdmin.xo.admin.dict.service.impl;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.wyd.wenyongdaAdmin.commons.model.admin.dict.dto.DictEntryDTO;
import com.wyd.wenyongdaAdmin.commons.model.admin.dict.entity.DictEntryEntity;
import com.wyd.wenyongdaAdmin.xo.admin.dict.mapper.DictEntryMapper;
import com.wyd.wenyongdaAdmin.xo.admin.dict.service.IDictEntryService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class DictEntryServiceImpl extends ServiceImpl<DictEntryMapper, DictEntryEntity> implements IDictEntryService {

    private static final Logger log = LoggerFactory.getLogger(DictEntryServiceImpl.class);


    @Override
    public PageInfo<DictEntryDTO> selectPageWithCount(Integer pageNumber, Integer pageSize, DictEntryDTO dictEntryDTO) {
        QueryWrapper<DictEntryEntity> queryWrapper = new QueryWrapper<DictEntryEntity>().orderBy(true, true, "sort");
        if (ObjectUtil.isNotNull(dictEntryDTO)) {
            if (StrUtil.isNotBlank(String.valueOf(dictEntryDTO.getDictId()))) {
                queryWrapper.eq("dict_id", dictEntryDTO.getDictId());
            }
        }
        PageHelper.startPage(pageNumber, pageSize);
        List<DictEntryEntity> dictEntryEntityList = this.baseMapper.selectList(queryWrapper);
        PageInfo pageInfo = new PageInfo<>(dictEntryEntityList);
        List<DictEntryDTO> dictEntryDTOList = new ArrayList<>();
        DictEntryDTO dictEntry = null;
        for (DictEntryEntity dictEntryEntity : dictEntryEntityList) {
            dictEntry = new DictEntryDTO();
            BeanUtil.copyProperties(dictEntryEntity, dictEntry);
            dictEntryDTOList.add(dictEntry);
        }
        pageInfo.setList(dictEntryDTOList);
        PageHelper.clearPage();
        return pageInfo;
    }

    @Override
    public Integer addDictEntry(DictEntryDTO dictEntryDTO) {
        if (ObjectUtil.isNotNull(dictEntryDTO)) {
            DictEntryEntity dictEntry = new DictEntryEntity();
            BeanUtil.copyProperties(dictEntryDTO, dictEntry);
            return this.baseMapper.insert(dictEntry);
        } else {
            return 0;
        }
    }

    @Override
    public Integer updateDictEntry(DictEntryDTO dictEntryDTO) {
        if (ObjectUtil.isNotNull(dictEntryDTO)) {
            DictEntryEntity dictEntry = new DictEntryEntity();
            BeanUtil.copyProperties(dictEntryDTO, dictEntry);
            return this.baseMapper.updateById(dictEntry);
        } else {
            return 0;
        }
    }

    @Override
    public Integer deleteDictEntry(List<Long> ids) {
        if (ids.size() > 0) {
            return this.baseMapper.deleteBatchIds(ids);
        } else {
            return 0;
        }

    }
}
